/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package domain.controllers;

import domain.Entity.EntityGestor;
import domain.Entity.EntityProyecto;
import domain.Entity.EntityUsuario;
import domain.commands.ProyectoComando;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import managers.ProyectoManager;
import managers.UsuarioManager;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;

/**
 *
 * @author jorge
 */
public class proyectoController extends SimpleFormController{
    
      public proyectoController() {
        setCommandClass(ProyectoComando.class);
  }
        
    ProyectoManager pm = ProyectoManager.getInstance();  
    UsuarioManager um = UsuarioManager.getInstance();
   
    @Override
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, org.springframework.validation.BindException errors) throws Exception {

       ModelAndView mav = new ModelAndView();
       HttpSession session = request.getSession();
       EntityGestor gestor = (EntityGestor) session.getAttribute("gestorUsuario");
        if(gestor == null){
            mav.setView(new RedirectView("login.htm"));
            return mav;
        }else{
        ProyectoComando pc = (ProyectoComando) command;
        int horasMax = 0;
        if(!pc.getHorasMaximas().equals("")){
              horasMax = Integer.parseInt(pc.getHorasMaximas());
        }
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
        Date fecIni = sdf.parse(pc.getFechaIni());
        Date fecFin = sdf.parse(pc.getFechaFin());
        
        if(fecFin.compareTo(fecIni)< 0 ){
            
            mav.setView(new RedirectView("errorNombre.htm"));
            return mav;
            
        }
        
        Double precio = 0.0;
        if(!pc.getPrecioHora().equals("")){
            precio = Double.valueOf(pc.getPrecioHora()).doubleValue();
        }
	
      if(estaProyecto(pc.getNombreProyecto())){
            
            mav.setView(new RedirectView("errorNombre.htm"));
        
        }else{

            
            pm.addProyecto(pc.getNombreProyecto(),pc.getDescripcion(),precio,horasMax,fecIni,fecFin,(EntityGestor)gestor);
            
            mav.setView(new RedirectView("mostrarProyectos.htm"));
            
       }
        return mav;
        }
    }
    
  private boolean estaProyecto(String nombre){
        
        EntityProyecto ep = pm.get(nombre);
         
        return (ep.getNombreProyecto() != null) ;
  }
        
}